package com.miyu.magicapi.config;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONObject;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Component;
import org.ssssssss.magicapi.modules.db.model.Page;
import org.ssssssss.magicapi.modules.db.provider.PageProvider;
import org.ssssssss.script.runtime.RuntimeContext;

import java.util.Objects;

/**
 * 分页对象默认提取接口
 */
@Component
public class MyPageProvider implements PageProvider {

    /**
     *   此方法需要根据实际情况替换
     */

    @Override
    public Page getPage(RuntimeContext context) {


        long page = NumberUtils.toLong(
                Objects.toString(context.eval("page"), (String)null), 1);
        long pageSize = NumberUtils.toLong(
                Objects.toString(context.eval("size"), (String)null), 20);
        // 计算limit以及offset
        if(!StrUtil.isBlankIfStr(context.eval("body"))) {
            JSONObject params = JSONObject.from(context.eval("body"));
            if(params.containsKey("page")) {
                JSONObject pg = params.getJSONObject("page");
                page = NumberUtils.toLong(pg.getString("currentPage"), 1);
                pageSize = NumberUtils.toLong(pg.getString("pageSize"), 20);
            }
        }

        return new Page(pageSize, (page - 1) * pageSize);
    }
}
